package jnpf.database.model.dbtable;


import jnpf.database.constant.DbAliasConst;
import jnpf.database.model.dbfield.DbFieldModel;
import jnpf.database.model.dbtable.base.DbTableModelBase;
import jnpf.database.model.dto.ModelDTO;
import jnpf.database.model.interfaces.JdbcGetMod;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;

/**
 *
 * @author JNPF开发平台组
 * @version V3.1.0
 * @copyright 引迈信息技术有限公司
 * @date 2021/06/18 By:YanYu
 */
@Data
@ToString(callSuper=true)
@NoArgsConstructor
public class DbTableFieldModel extends DbTableModelBase implements JdbcGetMod {

    /**
    * 标识
    */
    private String id;

    /**
     * 数据源主键
     */
    private String dbLinkId;

    /**
     * 数据库编码
     */
    private String dbEncode;

    /**
     * 更新时新表名
     */
    private String updateNewTable;

    /**
     * 更新前的旧表名
     */
    private String updateOldTable;

    /**
     * 字段信息集合
     */
    private List<DbFieldModel> dbFieldModelList;

    /**
     * 前端注释
     */
    public String getTableName(){
        return getComment();
    }

    public void setTableName(String comment) {
        super.setComment(comment);
    }

    public DbTableFieldModel(String table, String tableComment, List<DbFieldModel> dbFieldModelList){
        this.setTable(table);
        this.setComment(tableComment);
        this.dbFieldModelList = dbFieldModelList;
    }

    @Override
    public void setMod(ModelDTO modelDTO) {
        try {
            ResultSet resultSet = modelDTO.getResultSet();
            // ============== 表名 ==============
            String table = resultSet.getString(DbAliasConst.TABLE_NAME);
            // ============== 表注释 ==============
            String tableComment = resultSet.getString(DbAliasConst.TABLE_COMMENT);
            // ============== 表总数 ==============
            Integer sum = resultSet.getInt(DbAliasConst.TABLE_SUM);
            // ============== 表大小（由于部分数据库，版本取消了此功能）==============
            /*String size = resultSet.getString(DbAliasEnum.TABLE_SIZE.AS());*/
            this.setTable(table);
            this.setComment(tableComment);
            this.setSum(sum);
//            this.setSize(size);
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

}
